using System;
using System.Collections.Generic;
using Me.Prettyprint.Cassandra.Connection.Factory;
using Me.Prettyprint.Cassandra.Service;

namespace Me.Prettyprint.Cassandra.Connection
{
    /// <summary>
    /// LoadBalancingPolicy defines the two methods needed to get a connection
    /// for a list of connection pools. GetPool takes a list and return the pool
    /// it should use.
    /// </summary>
	public interface LoadBalancingPolicy
	{
        HClientPool GetPool(ICollection<HClientPool> pools, List<CassandraHost> excludeHosts);
        HClientPool CreateConnection(HClientFactory clientFactory, CassandraHost host, CassandraClientMonitor monitor);
    }
}